<?php

namespace app\index\controller;

class UploadFile
{
    // 获取全部报名表信息
    public function getAll()
    {
        $return_data = array();

        $applicationform = db("applicationform");
        $resp = $applicationform->select();
        if ($resp) {
            $return_data['error_code'] = 0;
            $return_data['msg'] = '查询成功';
            $return_data['data'] = $resp;
        } else {
            $return_data['error_code'] = 1;
            $return_data['msg'] = '查询无结果';
        }
        return json($return_data);
    }

    //根据openid查询是否有投递过报名表
    public function searchOne()
    {
        $return_data = array();
        if (!isset($_POST['openid'])) {
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数缺省:openid';
            return json($return_data);
        }

        $applicationform = db("applicationform");
        $where = array();
        $where['openid'] = $_POST['openid'];
        $resp = $applicationform->where($where)->find();
        if ($resp) {
            $return_data['error_code'] = 0;
            $return_data['msg'] = '该用户已投递过报名表';
            $return_data['data'] = $resp;
        } else {
            $return_data['error_code'] = 1;
            $return_data['msg'] = '查询无结果';
        }
        return json($return_data);
    }

    //上传报名表
    public function upload()
    {
        //提前声明返回数据
        $return_data = array();

        //传入缺省检验
        if (request()->file('pdfFile') && $_POST['openid']) {
            //定义$policyFile变量接收前端传来的文件
            $pdfFile = request()->file('pdfFile');

            //接收文件附属信息（即文件额外的信息）
            // $fileName = request()->post()['fileName'];

            //存储文件，定义$info参数检验存储是否成功
            //validate方法，限制文件大小、后缀名
            //move方法，第一项参数为路径，第二项参数为自定义的文件名，第三项参数为是否同名覆盖
            $info1 = $pdfFile->validate(['size' => 1024 * 1024 * 2, 'ext' => 'pdf'])->move('../public/applicationForm', time() . '_' . $pdfFile->getInfo()['name'], false); //上传目录
            if ($info1) {
                // 成功上传后 获取上传信息

                // // 输出 文件扩展名
                // echo $info1->getExtension();

                // // 输出 大概的文件路径
                // echo $info1->getSaveName();

                // // 输出 文件名.扩展名
                // echo $info1->getFilename();

                $applicationform = db("applicationform");

                // 封装插入数据库的信息
                $data = array();
                $data['openid'] = $_POST['openid'];
                $data['fileName'] = $info1->getFilename();
                $data['fileUrl'] = "https://gsdse.cn/tp5.1/public/applicationForm/" . $info1->getFilename();

                $result = $applicationform->insert($data);

                if ($result) {
                    $return_data['error_code'] = 0;
                    $return_data['fileName'] = $info1->getFilename();
                    $return_data['msg'] = '上传成功！';
                    $return_data['fileUrl'] = $data['fileUrl'];
                } else {
                    $return_data["error_code"] = 1;
                    $return_data["msg"] = "信息插入数据库失败";
                }
            } else {
                // 上传失败获取错误信息
                // echo $image1->getError();

                //构造返回数据
                $return_data['error_code'] = 2;
                $return_data['msg'] = "上传失败";
                $return_data['reason'] = $pdfFile->getError();
            }
        } else {
            //组装返回数据
            $return_data['error_code'] = 3;
            $return_data['msg'] = '参数缺省，请检查';
        }

        //返回数据
        return json($return_data);
    }

    //删除报名表,根据fileName删除
    public function delete()
    {
        //提前声明返回对象
        $return_data = array();

        if (!isset($_POST['fileName'])) {
            $return_data["error_code"] = 3;
            $return_data['msg'] = "参数缺省，请检查";
            return json($return_data);
        }
        $fileName = $_POST['fileName'];
        $applicationform = db('applicationform');
        $where = array();
        $where['fileName'] = $fileName;

        $fileUrl = "../public/applicationForm/" . $fileName;

        $deleteFileResult = unlink($fileUrl);
        if ($deleteFileResult) {
            $deleteDataResult = $applicationform->where($where)->delete();
            if ($deleteDataResult) {
                $return_data['error_code'] = 0;
                $return_data['msg'] = '删除数据库记录和文件成功';
            } else {
                $return_data['error_code'] = 1;
                $return_data['msg'] = '删除删除文件成功，但数据库记录失败';
            }
        } else {
            $return_data['error_code'] = 2;
            $return_data['msg'] = '删除失败';
        }
        return json($return_data);
    }
}
